// 认证相关工具函数

/**
 * 检查是否是token过期错误
 * @param {Object} error 错误对象
 * @returns {boolean} 是否是token过期
 */
function isTokenExpired(error) {
  if (!error) return false;

  // 检查HTTP状态码
  if (error.statusCode === 401) {
    return true;
  }

  // 检查响应数据中的错误信息
  if (error.data && error.data.message) {
    const message = error.data.message.toLowerCase();
    return (
      message.includes("token") &&
      (message.includes("无效") ||
        message.includes("过期") ||
        message.includes("invalid") ||
        message.includes("expired"))
    );
  }

  return false;
}

/**
 * 处理token过期
 * 清除用户信息并跳转到登录页面
 */
function handleTokenExpired() {
  // 清除本地存储的用户信息
  wx.removeStorageSync("userInfo");
  wx.removeStorageSync("token");

  // 显示提示
  wx.showModal({
    title: "登录已过期",
    content: "请重新登录",
    showCancel: false,
    confirmText: "去登录",
    success: () => {
      // 跳转到登录页面
      wx.redirectTo({
        url: "/pages/login/index",
      });
    },
  });
}

/**
 * 处理API错误
 * 自动检测token过期并处理
 * @param {Object} error 错误对象
 * @param {Function} customHandler 自定义错误处理函数
 */
function handleApiError(error, customHandler) {
  if (isTokenExpired(error)) {
    handleTokenExpired();
    return;
  }

  // 如果不是token过期，使用自定义处理函数
  if (customHandler && typeof customHandler === "function") {
    customHandler(error);
  } else {
    // 默认错误处理
    wx.showToast({
      title: error.data?.message || "请求失败",
      icon: "none",
      duration: 2000,
    });
  }
}

module.exports = {
  isTokenExpired,
  handleTokenExpired,
  handleApiError,
};
